iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0
Mobile Development

iOS 菜雞的開發日記系列 第 29

鐵人賽 [Day 29] ARKit 教學(4)

  • 分享至 

  • xImage
  •  

大家好!昨天已經教大家寫過如何追蹤臉部,今天要教大家如何判斷臉部特徵!

新增辨識臉部特徵

我們可以先新增一個字串變數,讓我們判斷的結果輸出並 print 到這個字串變數

 var result = ""

新增一個 func 來判斷臉部特徵

 func judgeFace(anchor: ARFaceAnchor) {
        // 新增嘴巴左邊微笑和右邊微笑的特徵點
        let smileLeft = anchor.blendShapes[.mouthSmileLeft]
        let smileRight = anchor.blendShapes[.mouthSmileRight]
        // 新增吐舌頭的特徵點
        let tongueOut = anchor.blendShapes[.tongueOut]
        
        // 判斷兩邊微笑機率相加,如果 > 0.9 則輸出 '微笑中'
        if ((smileLeft?.decimalValue ?? 0.0) + (smileRight?.decimalValue ?? 0.0)) > 0.9 {
            result = "微笑中"
        }
        
         // 判斷吐舌頭機率,如果 > 0.9 則輸出 '吐舌頭中'
        if (tongueOut?.decimalValue ?? 0.0) > 0.9 {
            result = "吐舌頭中"
        }
    }

在 renderer(_didUpdate:) 呼叫剛剛寫好 func 並輸出結果

func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
    if let faceAnchor = anchor as? ARFaceAnchor, let faceGeometry = node.geometry as? ARSCNFaceGeometry {
        faceGeometry.update(from: faceAnchor.geometry)
        judgeFace(anchor: faceAnchor as! ARFaceAnchor)
        print(result)
    }
}

整個完成之後的程式碼應該會向這個樣子:
https://ithelp.ithome.com.tw/upload/images/20231014/20151391GOXGxCu4mK.png
https://ithelp.ithome.com.tw/upload/images/20231014/20151391Qxsk4zMibJ.png

這樣子就大功告成囉!各位可以試試看自己寫的是否會辨識自己的臉部表情特徵喔!


上一篇
鐵人賽 [Day 28] ARKit 教學(3)
下一篇
[鐵人賽 Day 30] 鐵人賽結語
系列文
iOS 菜雞的開發日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言